#ifndef __TESTPACKAGE_H
#define __TESTPACKAGE_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef LIBTESTPACKAGE_EXPORTS
#define TESTPACKAGE_API __declspec(dllexport) __stdcall
#else
#define TESTPACKAGE_API __declspec(dllimport) __stdcall
#endif

#include "misc.h"
#include <judge_fs.h>

extern
jstatus_t
TESTPACKAGE_API
package_create(
	struct judge_fs **, /* out, fs */
	const char *); /* in, path */

extern
jstatus_t
TESTPACKAGE_API
package_destroy(
	struct judge_fs *); /* in, fs */

extern
jstatus_t
TESTPACKAGE_API
package_has_spj(
	struct judge_fs *, /* in, fs */
	uint32_t *); /* out, has_spj */

extern
jstatus_t
TESTPACKAGE_API
package_get_metadata(
	struct judge_fs *, /* in, fs */
	uint32_t *, /* out, time_limit */
	uint32_t *, /* out, memory_limit */
	uint32_t *, /* out, testcase_count */
	const char **, /* out, testcase_input_path */
	const char **, /* out, testcase_output_path */
	const char **, /* out, spj_prefix */
	uint32_t *, /* out, spj_key_count */
	const char **); /* out, spj_key */


#ifdef __cplusplus
}
#endif

#endif
